/*============================================================================*/
/*                   CONTINENTAL AUTOMOTIVE SYSTEMS                           */
/*============================================================================*/
/*                        OBJECT SPECIFICATION                                */
/*============================================================================*
* name:            APP_Knob.c
* version:         1.1
* created_by:      Andres Torres Garcia
* date_created:    Sunday May 20 13:41:01 2012 %
*=============================================================================*/
/* DESCRIPTION : Source file for Application layer for KNOB                   */
/*============================================================================*/
/* FUNCTION COMMENT : Describes the functions for Application Layer for KNOB  */
/* Include the state machine for KNOB                                         */
/*============================================================================*/
/*                               OBJECT HISTORY                               */
/*============================================================================*/
/*  REVISION |   DATE      |                               |      AUTHOR      */
/*----------------------------------------------------------------------------*/
/*  1.0      | 11/ago/2011 |                               | Andres Torres	  */
/*	1.1		 |	26/05/2012 |							   | Andres Torres    */
/*============================================================================*/
/* Includes */
/* -------- */
#include "stdtypedef.h"
#include "HAL_Knob.h"
#include "APP_Knob.h"

/* Exported functions prototypes */
/* ----------------------------- */
T_UWORD SM_KNOB(E_SM_KNOB e_sm_knob);

/* Exported functions */
/* ------------------ */
/**************************************************************
 *  Name                 :	SM_KNOB
 *  Description          :	State machine for the knob
 *  Parameters           :  [Input: knob state, Output, Input / output]
 *  Return               :	Knob value
 *  Critical/explanation :    No
 **************************************************************/
///////////////////////////////////////////////////////////////////////
/// \brief State machine for the knob
/// \param e_sm_knob The desired state of the knob
/// \return KNOB_Value	If the state is GET_KNOB_VALUE, KNOB_Value is returned, otherwise is 0
/////////////////////////////////////////////////////////////////////////
T_UWORD SM_KNOB(E_SM_KNOB e_sm_knob)
{
	static T_UWORD knobValue = 0;

	switch(e_sm_knob)
	{
		case INIT_KNOB:
		{
			KNOB_Init();
			break;
		}
		case READ_REQUEST:
		{
			KNOB_SendReadRequest();			
			break;
		}
		case GET_KNOB_VALUE:
		{
			
			if(KNOB_ReadDone())
			{
				knobValue = KNOB_GetKnobValue();	
			}
			
			break;
		}
		default:
			break;
	}
	
	return knobValue;
}